package system_;

import java.util.Arrays;

/**
 * @author DCSGO
 * @version 1.0
 * exit arraycopy
 * currentTimeMillis
 * gc
 */
public class System_ {
    public static void main(String[] args) {
        //垃圾回收器 System.gc

        Car niceCar=new Car("宝马");
        niceCar=null;

        System.gc();
        System.out.println("程序执行完毕");
        //程序执行完毕
        //销毁了汽车：宝马

        //在代码执行过程中遇到 System.gc 时
        //并不会当 System.gc 运行运行完毕后才执行之后的代码
    }

    public static void main3(String[] args) {
        //返回当前时间距离 1970-1-1 的毫秒数
        System.out.println(System.currentTimeMillis());//1687651403095
    }

    public static void main2(String[] args) {
        //System.arraycopy 将一个数组中的某些元素拷贝到另一个数组中
        //将 src 中的从 srcPos 开始的 length 个数组元素拷贝到 dest 数组中 起始下标为 destPos
        //更多详细内容可看：https://gitee.com/deng-chongshuang/java-learning-code/blob/master/2023-5-5/src/Test.java
        int[] src={1,2,3};
        int[] dest=new int[3];
        System.out.println(Arrays.toString(dest));//[0, 0, 0]

        System.arraycopy(src,0,dest,0,src.length);
        System.out.println("After copy: "+Arrays.toString(dest));//After copy: [1, 2, 3]

        boolean[] booleans1={true,true,false,true};
        boolean[] booleans2=new boolean[4];
        System.out.println(Arrays.toString(booleans2));//[false, false, false, false]

        System.arraycopy(booleans1,0,booleans2,0,booleans1.length);
        System.out.println(Arrays.toString(booleans2));//[true, true, false, true]
    }

    public static void main1(String[] args) {
        //System.exit 退出当前程序(0 表示正常退出)
        System.out.println("1");
        System.exit(0);
        System.out.println("2");
        //只打印了 1
    }
}
class Car{
    String name;

    public Car(String name) {
        this.name = name;
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("销毁了汽车："+name);
    }
}
